package Server;

/*
 * File:    ControlApagado.java
 * Coms:    ESta clase se encarga de gestionar el apagado controlado del sistema
 */

/**
 * @author Daniel Cabrera Ebana - 686013
 * @author Alberto Sanchez Romero - 662385
 * @since
 */

public class ControlApagado implements Runnable {

	private GestorRecursos monitorRecursos;

	public ControlApagado(GestorRecursos gr) {

		monitorRecursos = gr;

	}

	public void run() {
		while (true) {

			// controlar que no se ha pulsado el boton apagar
			if (monitorRecursos.getApagar()) {

				System.out.println("Esperando fin servicios...");
				//System.out.println(monitorRecursos.getApagar());
				sleepy(1);

				// añadimos 2 segundo de espera en cada paso de comprobacion por
				// los tiempo sync

				// controlar que no hya clientes negaociando
				if (monitorRecursos.getNumClientes() == 0) {
					sleepy(1);

					// comprobar que no hay imagenes mostrandose en la las
					// vallas
					if (monitorRecursos.getImgEnValla(1) == 0
							&& monitorRecursos.getImgEnValla(2) == 0) {
						sleepy(1);

						// comprobar que no hay imagenes pendientes de
						// mostrar(en las colas)
						if (monitorRecursos.getsize(1) == 0
								&& monitorRecursos.getsize(2) == 0) {

							System.out.println("Apagando...");
							monitorRecursos.setCerrarServidor();
							System.exit(0);
						}

					}
				}

			}
		}

	}

	/**
	 * Duerme el proceso durante el tiempo indicado en segundos
	 * 
	 * @param segundos
	 * 
	 */
	private static void sleepy(int segundos) {

		try {
			Thread.sleep(segundos * 1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}

	}

}
